package com.kakarote.authorization.common;

import com.fasterxml.jackson.annotation.JsonCreator;
import lombok.Getter;

/**
 * 登录方式
 *
 * @author hmb
 */
@Getter
public enum LoginType {
    /**
     * 密码登录
     */
    PASSWORD(1),
    /**
     * 短信验证码登录
     */
    SMS_CODE(2),
    /**
     * 企业微信手机端登录
     */
    CP_CODE(3),
    /**
     * 企业微信扫码登录
     */
    CP_QR_CODE(4),

    /**
     * 企业微信侧边栏
     */
    WX_WORK(5),
    /**
     * 飞书免登录
     */
    FLY_CODE(6),

    /**
     * 钉钉登录
     */
    DINGTALK_CODE(7),

    /**
     * 钉钉扫码登录
     */
    DINGTALK_QR_CODE(8),

    /**
     * 腾讯会议
     */
    TENCENT_MEETING_CODE(9),

    /**
     * 飞书扫码
     */
    FLY_QR_CODE(10),
    ;


    /**
     * 登录类型
     */
    private final Integer type;

    LoginType(Integer type) {
        this.type = type;
    }

    @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
    public static LoginType parse(Integer value) {
        if (value == null) {
            return null;
        }
        switch (value) {
            case 1:
                return PASSWORD;
            case 2:
                return SMS_CODE;
            case 3:
                return CP_CODE;
            case 4:
                return CP_QR_CODE;
            case 5:
                return WX_WORK;
            case 6:
                return FLY_CODE;
            case 7:
                return DINGTALK_CODE;
            case 8:
                return DINGTALK_QR_CODE;
            case 9:
                return TENCENT_MEETING_CODE;
            case 10:
                return FLY_QR_CODE;
            default:
                return null;
        }
    }
}
